#include "console.h"
#include "uart.h"
#include "printf.h"
// 控制台初始化
void console_init(void) {
    uart_init();
}

// 输出字符到控制台（带特殊字符处理）
void consputc(int c) {
    if(c == BACKSPACE){
        // 退格处理：回退、空格、再回退
        uart_putc('\b');
        uart_putc(' ');
        uart_putc('\b');
    } else {
        uart_putc(c);
    }
}

// 简单的字符输出
void console_putc(char c) {
    consputc(c);
}

// 字符串输出
void console_puts(const char *s) {
    while (*s) {
        if (*s == '\n') console_putc('\r');
        console_putc(*s++);
    }
}

// 清屏功能
void clear_screen(void) {
    // 使用ANSI转义序列清屏
    console_puts("\033[2J");  // 清除整个屏幕
    console_puts("\033[H");   // 光标回到左上角
}


// 清除当前行
void clear_line(void) {
    console_puts("\033[K");  // 清除整行
    console_puts("\r");       // 回到行首
}

// 设置文本颜色
void console_set_color(int color) {
    char buf[8];
    sprintf(buf, "\033[%dm", color);
    console_puts(buf);
}

// 重置颜色到默认
void console_reset_color(void) {
    console_puts("\033[0m");  // 重置所有属性
}

// 设置颜色和背景
void console_set_color_bg(int fg_color, int bg_color) {
    char buf[16];
    sprintf(buf, "\033[%d;%dm", fg_color, bg_color);
    console_puts(buf);
}
